﻿/*
 * Created by SharpDevelop.
 * User: kat
 * Date: 10/4/2011
 * Time: 9:33 PM
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Drawing;
using System.Windows.Forms;
using Business_Logic;
using System.Collections.Generic;
using Business_Entity;
namespace PetSoft.GUI.Configuracion
{
	/// <summary>
	/// Description of GUIBuscarVal.
	/// </summary>
	public partial class GUIBuscarVal : Form
	{
		BLValores blValores;
		List<String[]> lstespecies;
		List<String[]> lstrazas;
		List<String[]> lstTipoProductos;
		List<String[]> lstTipoServicios;
		List<BETasaCambio> lstTasaCambio;
		public GUIBuscarVal()
		{
			try{
				//
				// The InitializeComponent() call is required for Windows Forms designer support.
				//
				InitializeComponent();
				blValores=new BLValores();
				lstTipoProductos=new List<string[]>();
				lstTipoServicios=new List<string[]>();
				lstTasaCambio=new List<BETasaCambio>();
				TasaCambioTB.Text="USD";
				FechaTasaCambioDTP.Value=DateTime.Now;
				
				//
				// TODO: Add constructor code after the InitializeComponent() call.
				//
				//ValoresTAB.TabPages.Remove(TipoProductoTAB);
				//ValoresTAB.TabPages.Remove(TipoServicioTAB);
				//ValoresTAB.TabPages.Remove(TasaTAB);
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void Button1Click(object sender, EventArgs e)
		{
			try{
				this.Close();
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void Button3Click(object sender, EventArgs e)
		{
			try{
				Configuracion.GUIMantVal mantVal = new Configuracion.GUIMantVal();
				mantVal.ShowDialog(this);
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void LimpiarEspecieBTNClick(object sender, EventArgs e)
		{
			try{
				SeleccionarTodoEspecieCHB.Checked=false;
				EspecieTB.Text="";
				TablaEspecieDGV.Rows.Clear();
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void LimpiarRazaBTNClick(object sender, EventArgs e)
		{
			try{
				SeleccionarTodoRazaCHB.Checked=false;
				RazaTB.Text="";
				TablaRazaDGV.Rows.Clear();
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		private void CargarEspecies(){
			try{
				TablaEspecieDGV.Rows.Clear();
				String cadena=EspecieTB.Text;
				if (EspecieTB.Text.CompareTo("")==0){
					cadena="TODOS";
				}
				lstespecies=blValores.getEspecies(cadena);
				for (int i=0;i<lstespecies.Count;i++){
					String[] cad=lstespecies[i];
					TablaEspecieDGV.Rows.Add(new object[]{false,cad[0],cad[1]});
				}
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		private void CargarRazas(){
			try{
				TablaRazaDGV.Rows.Clear();
				String cadena=RazaTB.Text;
				if (RazaTB.Text.CompareTo("")==0){
					cadena="TODOS";
				}
				lstrazas=blValores.getRazas(-1,cadena);
				for (int i=0;i<lstrazas.Count;i++){
					String[] cad=lstrazas[i];
					TablaRazaDGV.Rows.Add(new object[]{false,cad[0],cad[1]});
				}
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		void BuscarEspecieBTNClick(object sender, EventArgs e)
		{
			try{
				CargarEspecies();
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void BuscarRazaBTNClick(object sender, EventArgs e)
		{
			try{
				CargarRazas();
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void SeleccionarTodoEspecieCHBCheckedChanged(object sender, EventArgs e)
		{
			try{
				Utils.seleccionarTodo(TablaEspecieDGV,SeleccionarTodoEspecieCHB,"SeleccionarEspecie");
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void SeleccionarTodoRazaCHBCheckedChanged(object sender, EventArgs e)
		{
			try{
				Utils.seleccionarTodo(TablaRazaDGV,SeleccionarTodoRazaCHB,"SeleccionarRaza");
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void TablaEspecieDGVCellDoubleClick(object sender, DataGridViewCellEventArgs e)
		{
			try{
				Utils.checkDobleClick(TablaEspecieDGV,"SeleccionarEspecie");
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void TablaRazaDGVCellDoubleClick(object sender, DataGridViewCellEventArgs e)
		{
			try{
				Utils.checkDobleClick(TablaRazaDGV,"SeleccionarRaza");
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void NuevoEspecieBTNClick(object sender, EventArgs e)
		{
			try{
				if (EspecieTB.Text.CompareTo("")==0){
					Utils.MessageAviso("Debe de ingresar un valor");
				}
				else{
					if (Utils.MessagePregunta("¿Desea guardar la especie?")){
						blValores.InsertarEspecie(EspecieTB.Text);
						CargarEspecies();
					}
				}
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		List<int> ValidarTablaCheckBoxes(DataGridView tabla){
			List<int> lstdatos=new List<int>();
			try{
				
				for (int i=0;i<tabla.Rows.Count;i++){
					if ((bool)tabla[0,i].Value==true){
						lstdatos.Add(int.Parse(tabla[1,i].Value.ToString()));
					}
				}
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
			return lstdatos;
			
		}
		void NuevoRazaBTNClick(object sender, EventArgs e)
		{
			try{
				if (RazaTB.Text.CompareTo("")==0){
					Utils.MessageAviso("Debe de ingresar un valor");
				}
				else{
					List<int> lstdatos=ValidarTablaCheckBoxes(TablaEspecieDGV);
					if (lstdatos.Count==1){
						if (Utils.MessagePregunta("¿Desea guardar la raza?")){
							blValores.InsertarRaza(RazaTB.Text,lstdatos[0]);
							CargarRazas();
						}
					}else{
						Utils.MessageAviso("Debe de Seleccionar solo una Especie para poder asociarla a una Raza");
					}
				}
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		void CargarTablaRaza(){
			try{
				TablaRazaDGV.Rows.Clear();
				String cadena=RazaTB.Text;
				if (RazaTB.Text.CompareTo("")==0){
					cadena="TODOS";
				}
				lstrazas=blValores.getRazas(-1,cadena);
				for (int i=0;i<lstrazas.Count;i++){
					String[] cad=lstrazas[i];
					TablaRazaDGV.Rows.Add(new object[]{false,cad[0],cad[1]});
				}
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		void TablaEspecieDGVCellContentClick(object sender, DataGridViewCellEventArgs e)
		{
			try{
				int actual=e.RowIndex;
				TablaRazaDGV.Rows.Clear();
				String cadena=RazaTB.Text;
				if (RazaTB.Text.CompareTo("")==0){
					cadena="TODOS";
				}
				lstrazas=blValores.getRazas(int.Parse(TablaEspecieDGV[1,actual].Value.ToString()),cadena);
				for (int i=0;i<lstrazas.Count;i++){
					String[] cad=lstrazas[i];
					TablaRazaDGV.Rows.Add(new object[]{false,cad[0],cad[1]});
				}
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void EliminarEspecieBTNClick(object sender, EventArgs e)
		{
			try{
				List<int> lstLista=ValidarTablaCheckBoxes(TablaEspecieDGV);
				if (lstLista.Count>0){
					for (int i=0;i<TablaEspecieDGV.Rows.Count;i++){
						if ((bool)TablaEspecieDGV[0,i].Value){
							int cod=int.Parse(TablaEspecieDGV[1,i].Value.ToString());
							blValores.EliminarEspecie(cod);
						}
					}
				}
				else{
					Utils.MessageAviso("Debe de seleccionar al menos una Especie");
				}
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void LimpiarTipoProductoBTNClick(object sender, EventArgs e)
		{
			try{
				TipoProductoTB.Text="";
				TablaTipoProductoDGV.Rows.Clear();
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void SeleccionarTodoTipoProductoCHBCheckedChanged(object sender, EventArgs e)
		{
			try{
				Utils.seleccionarTodo(TablaTipoProductoDGV,SeleccionarTodoTipoProductoCHB,"SeleccionarTipoProducto");
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		
		void TablaTipoProductoDGVCellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
		{
			try{
				Utils.checkDobleClick(TablaTipoProductoDGV,"SeleccionarTipoProducto");
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void BuscarTipoProductoBTNClick(object sender, EventArgs e)
		{
			try{
				String cadena="";
				if (TipoProductoTB.Text==""){
					cadena="Todos";
				}
				else{
					cadena=TipoProductoTB.Text;
				}
				lstTipoProductos=blValores.getTipoProductos(cadena);
				CargaTablaTipoProductos();
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		void CargaTablaTipoProductos(){
			try{
				TablaTipoProductoDGV.Rows.Clear();
				
				for (int i=0;i<lstTipoProductos.Count;i++){
					String [] cad=lstTipoProductos[i];
					TablaTipoProductoDGV.Rows.Add(new object[]{false,cad[0],cad[1]});
				}
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		void CargaTablaTipoServicios(){
			try{
				TablaTipoServicioDGV.Rows.Clear();
				
				for (int i=0;i<lstTipoServicios.Count;i++){
					String [] cad=lstTipoServicios[i];
					TablaTipoServicioDGV.Rows.Add(new object[]{false,cad[0],cad[1]});
				}
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void BuscarTipoServicioBTNClick(object sender, EventArgs e)
		{
			try{
				String cadena="";
				if (TipoServicioTB.Text==""){
					cadena="Todos";
				}
				else{
					cadena=TipoServicioTB.Text;
				}
				lstTipoServicios=blValores.getTipoServicios(cadena);
				CargaTablaTipoServicios();
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void GuardarTipoServicioBTNClick(object sender, EventArgs e)
		{
			try{
				if (TipoServicioTB.Text.CompareTo("")==0){
					Utils.MessageAviso("No puede ingresar una cadena vacia");
				}
				else{
					if (blValores.getTipoServicios(TipoServicioTB.Text).Count>0){
						Utils.MessageAviso("El Tipo de Servicio que desea ingresar ya esta Registrado");
					}
					else{
						blValores.InsertarTipoServicio(TipoServicioTB.Text);
						lstTipoServicios=blValores.getTipoServicios("Todos");
						CargaTablaTipoServicios();
					}
				}
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void GuardarTipoProductoBTNClick(object sender, EventArgs e)
		{
			try{
				if (TipoProductoTB.Text.CompareTo("")==0){
					Utils.MessageAviso("No puede ingresar una cadena vacia");
				}
				else{
					if (blValores.getTipoProductos(TipoProductoTB.Text).Count>0){
						Utils.MessageAviso("El Tipo de Producto que desea ingresar ya esta Registrado");
					}
					else{
						blValores.InsertarTipoProducto(TipoProductoTB.Text);
						lstTipoProductos=blValores.getTipoProductos("Todos");
						CargaTablaTipoProductos();
					}
				}
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void EliminarTipoServicioBTNClick(object sender, EventArgs e)
		{
			try{
				List<int> lstLista=ValidarTablaCheckBoxes(TablaTipoServicioDGV);
				if (lstLista.Count>0){
					for (int i=0;i<lstLista.Count;i++){
						blValores.EliminarTipoServicio(int.Parse(lstLista[i].ToString()));
						lstTipoServicios=blValores.getTipoServicios(TipoServicioTB.Text);
						CargaTablaTipoServicios();
					}
				}
				else{
					Utils.MessageAviso("Debe de seleccionar al menos un Tipo de Servicio");
				}
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void ElminarTipoProductoBTNClick(object sender, EventArgs e)
		{
			try{
				List<int> lstLista=ValidarTablaCheckBoxes(TablaTipoProductoDGV);
				if (lstLista.Count>0){
					for (int i=0;i<lstLista.Count;i++){
						blValores.EliminarTipoProducto(int.Parse(lstLista[i].ToString()));
						lstTipoProductos=blValores.getTipoProductos(TipoProductoTB.Text);
						CargaTablaTipoProductos();
					}
				}
				else{
					Utils.MessageAviso("Debe de seleccionar al menos un Tipo de Producto");
				}
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void LimpiarTipoCambioBTNClick(object sender, EventArgs e)
		{
			try{
				ValorCambioCompraTB.Text="";
				ValorCambioVentaTB.Text="";
				TablaTipoCambioDGV.Rows.Clear();
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void GuardarTipoCambioBTNClick(object sender, EventArgs e)
		{
			try{
				if (TasaCambioTB.Text.CompareTo("")==0){
					Utils.MessageAviso("No puede ingresar una cadena vacia");
				}
				else{
						BETasaCambio ta=new BETasaCambio();
						ta.Moneda="USD";
						ta.Compra=float.Parse(ValorCambioCompraTB.Text);
						ta.Venta=float.Parse(ValorCambioVentaTB.Text);
						ta.Fecha=DateTime.Now;
						blValores.InsertarTasaCambio(ta);
						lstTasaCambio=blValores.getTasasCambio(ta,"A");
						CargaTablaTasaCambios();
					
				}
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void BuscarTasaCambioBTNClick(object sender, EventArgs e)
		{
			try{
				BETasaCambio betasa=new BETasaCambio();
				String cadena=""; String cad="";
				if (ValorCambioCompraTB.Text.CompareTo("")==0){
					cadena="0";
				}
				else{
					cadena=ValorCambioCompraTB.Text;
				}
				if (ValorCambioVentaTB.Text.CompareTo("")==0){
					cad="0";
				}
				else{
					cad=ValorCambioVentaTB.Text;
				}
				betasa.Compra=float.Parse(cadena);
				betasa.Venta=float.Parse(cad);
				betasa.Moneda=TasaCambioTB.Text;
				
				if (BuscarTodosRB.Checked==true){
					cad="A";
				}
				else{
					cad="D";
					
				}
				lstTasaCambio=blValores.getTasasCambio(betasa,cad);
				CargaTablaTasaCambios();
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		void CargaTablaTasaCambios(){
			try{
				TablaTipoCambioDGV.Rows.Clear();
				BETasaCambio be=new BETasaCambio();
				for (int i=0;i<lstTasaCambio.Count;i++){
					be=lstTasaCambio[i];
					String fec=be.Fecha.ToString("yyyyMMdd");
					fec=fec.Substring(6,2)+"-"+fec.Substring(4,2)+"-"+fec.Substring(0,4);
					TablaTipoCambioDGV.Rows.Add(new object[]{fec,be.Venta.ToString(),be.Compra.ToString(),be.Moneda.ToString()});
				}
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		
		void EliminarRazaBTNClick(object sender, EventArgs e)
		{
			try{
				List<int> lstLista=ValidarTablaCheckBoxes(TablaRazaDGV);
				if (lstLista.Count>0){
					for (int i=0;i<TablaRazaDGV.Rows.Count;i++){
						if ((bool)TablaRazaDGV[0,i].Value){
							int cod=int.Parse(TablaRazaDGV[1,i].Value.ToString());
							blValores.EliminarRaza(cod);
						}
					}
				}
				else{
					Utils.MessageAviso("Debe de seleccionar al menos una Raza");
				}
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void LimpiarTipoServicioBTNClick(object sender, EventArgs e)
		{
			try{
				TipoProductoTB.Text="";
				TablaTipoServicioDGV.Rows.Clear();
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void SeleccionarTodoTipoServicioCHBCheckedChanged(object sender, EventArgs e)
		{
			try{
				Utils.seleccionarTodo(TablaTipoServicioDGV,SeleccionarTodoTipoServicioCHB,"SeleccionarTipoServicio");
			}catch(Exception ex){
				Utils.MessageError("",ex);
			}
		}
		
		void TipoServicioTBKeyPress(object sender, KeyPressEventArgs e)
		{
			Utils.NoCaracteresRarosTB(sender,e);
		}
		
		void TipoProductoTBKeyPress(object sender, KeyPressEventArgs e)
		{
			Utils.NoCaracteresRarosTB(sender,e);
		}
		
		void ValorCambioVentaTBKeyPress(object sender, KeyPressEventArgs e)
		{
			Utils.DecimalesPuntoTB(sender,e);
		}
		
		void ValoresTABKeyPress(object sender, KeyPressEventArgs e)
		{
			Utils.NoCaracteresRarosTB(sender,e);
		}
		
		void ValorCambioCompraTBKeyPress(object sender, KeyPressEventArgs e)
		{
			Utils.DecimalesPuntoTB(sender,e);
		}
		
		void EspecieTBKeyPress(object sender, KeyPressEventArgs e)
		{
			Utils.NoCaracteresRarosTB(sender,e);
		}
		
		void RazaTBKeyPress(object sender, KeyPressEventArgs e)
		{
			Utils.NoCaracteresRarosTB(sender,e);
		}
		
		void TablaTipoServicioDGVCellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
		{
			int fil=e.RowIndex;
			if ((bool)TablaTipoServicioDGV[0,fil].Value){
				TablaTipoServicioDGV[0,fil].Value=false;
			}
			else{
				TablaTipoServicioDGV[0,fil].Value=true;
			}
		}
		
		void TablaTipoProductoDGVCellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
		{
			int fil=e.RowIndex;
			if ((bool)TablaTipoProductoDGV[0,fil].Value){
				TablaTipoProductoDGV[0,fil].Value=false;
			}
			else{
				TablaTipoProductoDGV[0,fil].Value=true;
			}
		}
	}
}
